package com.atguigu.assionexcel.lock8;

import java.util.concurrent.TimeUnit;

/**
 * 多线程的8锁
 * 8、一个普通同步方法，一个静态同步方法，2部手机，请问先打印邮件还是短信？
 * 被synchronized和static修饰的方法，锁的对象是类的class对象。仅仅被synchronized修饰的方
 * 法，锁的对象是方法的调用者。即便是用同一个对象调用两个方法，锁的对象也不是同一个，所以两个
 * 方法用的不是同一个锁，后调用的方法不需要等待先调用的方法。
 */
public class LockTest1 {
    public static void main(String[] args) throws InterruptedException {
        DaoT1 d = new DaoT1();
        DaoT1 dd = new DaoT1();

        new Thread(() ->{
            try {
                dd.CallPhone();
            } catch (Exception e) {
                e.printStackTrace();
            }
        },"A").start();

        new Thread(() ->{
            try {
                d.SendEmail();
            } catch (Exception e) {
                e.printStackTrace();
            }
        },"B").start();

    }
    }



class DaoT1{
    public  synchronized void SendEmail() {
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("发邮件");

    }
    public static synchronized void CallPhone() throws Exception{
        System.out.println("打电话");
    }

    public  void Hello() {
        System.out.println("Hello");
    }

}
